﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ferreteria.Forms
{
    public partial class FrmRegistrarCompra : Form
    {
        private int ProvSelec;
        DataTable dtArticulos;
        DisancoEntities context;
        bool band = false;
        decimal subtotal = 0;
        
        public FrmRegistrarCompra()
        {
            InitializeComponent();
            

            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);

            dtArticulos = new DataTable();
            dtArticulos.Columns.Add("id");
            dtArticulos.Columns.Add("Codigo");
            dtArticulos.Columns.Add("Articulo");
            dtArticulos.Columns.Add("Cantidad");
            dtArticulos.Columns.Add("Precio Unitario");
            dtArticulos.Columns.Add("Total");

          }

        private void btnBuscarProv_Click(object sender, EventArgs e)
        {
            ProvBusqueda pantalla = new ProvBusqueda();
            pantalla.ShowDialog();

            if (pantalla.ProvSeleccionado != null)
            {
                ProvSelec = pantalla.ProvSeleccionado.prov_id;

                txtbProvNombre.Text = pantalla.ProvSeleccionado.prov_nombre;
            }
        }

        private void btnAddArticulo_Click(object sender, EventArgs e)
        {
            FrmAgregarArtCompra AgregarArtCompra = new FrmAgregarArtCompra();
            AgregarArtCompra.ShowDialog();

                               
                foreach (DataRow fila in dtArticulos.Rows)
                {
                                    
                 int idfila = Convert.ToInt32(fila["id"].ToString());


                 if (AgregarArtCompra.ArticuloSel != null)
                 {
                     if (AgregarArtCompra.ArticuloSel.art_id == idfila)
                     {
                         MessageBox.Show("Esta Repitiendo este Articulo en la Compra","Disanco Sanitarios",MessageBoxButtons.OK, MessageBoxIcon.Error);
                         AgregarArtCompra.ArticuloSel = null;
                     }
                 }
                } 
                  
                if (AgregarArtCompra.ArticuloSel != null)
                     {
                        int artId = AgregarArtCompra.ArticuloSel.art_id;
                        string artNombre = AgregarArtCompra.ArticuloSel.art_nombre;
                        string artCodigo = AgregarArtCompra.ArticuloSel.art_codigo;
                        int cantidad = AgregarArtCompra.CantArtSel;
                        decimal precioCompra = AgregarArtCompra.PrecioCompra;
                        decimal TotalFila = precioCompra * cantidad;

                        DataRow nuevoArt = dtArticulos.NewRow();

                        nuevoArt["id"] = artId;
                        nuevoArt["Codigo"] = artCodigo;
                        nuevoArt["Articulo"] = artNombre;
                        nuevoArt["Cantidad"] = cantidad;
                        nuevoArt["Precio Unitario"] = precioCompra;
                        nuevoArt["Total"] = TotalFila;

                        dtArticulos.Rows.Add(nuevoArt);
                        dtgvLineaCompra.DataSource = dtArticulos;
                        
                        dtgvLineaCompra.Columns["id"].Visible = false;
                        dtgvLineaCompra.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dtgvLineaCompra.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dtgvLineaCompra.Columns["Articulo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                        
                        CalcularTotal();
                      
            }

            AgregarArtCompra.Dispose();

        }

        private void CalcularTotal()
        {
            subtotal = 0;

            foreach (DataRow filaArt in dtArticulos.Rows)
            {
                subtotal = subtotal + Convert.ToDecimal(filaArt["Total"]);
            }

            txtbTotal.Text = subtotal.ToString();
         
        }

        private void btnDelArticulo_Click(object sender, EventArgs e)
        {
            

            int idSelecc = Convert.ToInt32(dtgvLineaCompra.CurrentRow.Cells[0].Value);

            foreach (DataRow filaart in dtArticulos.Rows)
            {
                if (Convert.ToInt32(filaart[0]) == idSelecc)
                {
                    dtArticulos.Rows.Remove(filaart);
                    break;
                }
            }

            dtgvLineaCompra.DataSource = dtArticulos;
            CalcularTotal();
            

        }

        //private void txtbFacturaNro_Leave(object sender, EventArgs e)
        //{
        //    if (txtbFacturaNro.Text != "")
        //    {
        //        var fmt = Convert.ToDouble(txtbFacturaNro.Text);
        //        txtbFacturaNro.Text = Convert.ToString(fmt.ToString("0000-00000000"));
        //    }
        //}

        void validarBotones()
        {
            string nrocomp = (MaskNroFactura.Text.Replace("-", "").Replace(" ", ""));
          
            if (nrocomp == "")
                band = false;
            else
                if (dtArticulos.Rows.Count == 0)
                band = false;
            else
                if (txtbProvNombre.Text == " ")
                    band = false;
                    else
                        band = true;
            }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
             validarBotones();
            
            if (band == false)  
                    MessageBox.Show("Debe Completar todos los campos", "Disanco Sanitarios", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
                  if (band == true)
                  {
                        Compras CompraNueva = new Compras();
                        string nrocomp = MaskNroFactura.Text.Replace("-","");

                        CompraNueva.compra_nro = Convert.ToInt32(nrocomp);
                        CompraNueva.compra_fecha = dateTimePicker1.Value;
                        CompraNueva.prov_id = ProvSelec;
                                    
                        foreach (DataRow filasgrilla in dtArticulos.Rows)
                        {
                            LineaCompra LineaC = new LineaCompra();
                           
                            LineaC.art_id = Convert.ToInt32(filasgrilla["id"]);
                            LineaC.lin_com_cant = Convert.ToInt32(filasgrilla["Cantidad"]);
                            LineaC.lin_com_precio = Convert.ToDecimal(filasgrilla["Precio Unitario"]);
                            CompraNueva.LineaCompra.Add(LineaC);
                        }
                        context.AddToCompras(CompraNueva);
                        context.SaveChanges();
                        
                        MessageBox.Show("Compra Registrada Correctamente","Disanco Sanitarios",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
                        this.Close();
                    
                    }
                                
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

      
        private void FrmRegistrarCompra_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F2)
            {
                e.Handled = true;
                this.btnBuscarProv_Click(sender, e);

            }
            else
                if (e.KeyCode == Keys.F3)
                {
                    if (btnAddArticulo.Enabled == true)
                    {
                        e.Handled = true;
                        this.btnAddArticulo_Click(sender, e);
                    }
                }
        }

    }
}